(0) Obligation:
The Runtime Complexity (innermost) of the given
CpxTRS could be proven to be
BOUNDS(1, n^1).
The TRS R consists of the following rules:
active(zeros) → mark(cons(0, zeros))
active(U11(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt)) → mark(tt)
active(U41(tt, V2)) → mark(U42(isNatIList(V2)))
active(U42(tt)) → mark(tt)
active(U51(tt, V2)) → mark(U52(isNatList(V2)))
active(U52(tt)) → mark(tt)
active(U61(tt, L, N)) → mark(U62(isNat(N), L))
active(U62(tt, L)) → mark(s(length(L)))
active(isNat(0)) → mark(tt)
active(isNat(length(V1))) → mark(U11(isNatList(V1)))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNatIList(V)) → mark(U31(isNatList(V)))
active(isNatIList(zeros)) → mark(tt)
active(isNatIList(cons(V1, V2))) → mark(U41(isNat(V1), V2))
active(isNatList(nil)) → mark(tt)
active(isNatList(cons(V1, V2))) → mark(U51(isNat(V1), V2))
active(length(nil)) → mark(0)
active(length(cons(N, L))) → mark(U61(isNatList(L), L, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X)) → U11(active(X))
active(U21(X)) → U21(active(X))
active(U31(X)) → U31(active(X))
active(U41(X1, X2)) → U41(active(X1), X2)
active(U42(X)) → U42(active(X))
active(U51(X1, X2)) → U51(active(X1), X2)
active(U52(X)) → U52(active(X))
active(U61(X1, X2, X3)) → U61(active(X1), X2, X3)
active(U62(X1, X2)) → U62(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X)) → mark(U11(X))
U21(mark(X)) → mark(U21(X))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2) → mark(U41(X1, X2))
U42(mark(X)) → mark(U42(X))
U51(mark(X1), X2) → mark(U51(X1, X2))
U52(mark(X)) → mark(U52(X))
U61(mark(X1), X2, X3) → mark(U61(X1, X2, X3))
U62(mark(X1), X2) → mark(U62(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(U11(X)) → U11(proper(X))
proper(tt) → ok(tt)
proper(U21(X)) → U21(proper(X))
proper(U31(X)) → U31(proper(X))
proper(U41(X1, X2)) → U41(proper(X1), proper(X2))
proper(U42(X)) → U42(proper(X))
proper(isNatIList(X)) → isNatIList(proper(X))
proper(U51(X1, X2)) → U51(proper(X1), proper(X2))
proper(U52(X)) → U52(proper(X))
proper(isNatList(X)) → isNatList(proper(X))
proper(U61(X1, X2, X3)) → U61(proper(X1), proper(X2), proper(X3))
proper(U62(X1, X2)) → U62(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X)) → ok(U11(X))
U21(ok(X)) → ok(U21(X))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2)) → ok(U41(X1, X2))
U42(ok(X)) → ok(U42(X))
isNatIList(ok(X)) → ok(isNatIList(X))
U51(ok(X1), ok(X2)) → ok(U51(X1, X2))
U52(ok(X)) → ok(U52(X))
isNatList(ok(X)) → ok(isNatList(X))
U61(ok(X1), ok(X2), ok(X3)) → ok(U61(X1, X2, X3))
U62(ok(X1), ok(X2)) → ok(U62(X1, X2))
isNat(ok(X)) → ok(isNat(X))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
Rewrite Strategy: INNERMOST
(1) NestedDefinedSymbolProof (BOTH BOUNDS(ID, ID) transformation)
The following defined symbols can occur below the 0th argument of cons: active, proper, cons
The following defined symbols can occur below the 1th argument of cons: active, proper, cons
The following defined symbols can occur below the 0th argument of top: active, proper, cons
The following defined symbols can occur below the 0th argument of proper: active, proper, cons
The following defined symbols can occur below the 0th argument of active: active, proper, cons
Hence, the left-hand sides of the following rules are not basic-reachable and can be removed:
active(U11(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt)) → mark(tt)
active(U41(tt, V2)) → mark(U42(isNatIList(V2)))
active(U42(tt)) → mark(tt)
active(U51(tt, V2)) → mark(U52(isNatList(V2)))
active(U52(tt)) → mark(tt)
active(U61(tt, L, N)) → mark(U62(isNat(N), L))
active(U62(tt, L)) → mark(s(length(L)))
active(isNat(0)) → mark(tt)
active(isNat(length(V1))) → mark(U11(isNatList(V1)))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNatIList(V)) → mark(U31(isNatList(V)))
active(isNatIList(zeros)) → mark(tt)
active(isNatIList(cons(V1, V2))) → mark(U41(isNat(V1), V2))
active(isNatList(nil)) → mark(tt)
active(isNatList(cons(V1, V2))) → mark(U51(isNat(V1), V2))
active(length(nil)) → mark(0)
active(length(cons(N, L))) → mark(U61(isNatList(L), L, N))
active(U11(X)) → U11(active(X))
active(U21(X)) → U21(active(X))
active(U31(X)) → U31(active(X))
active(U41(X1, X2)) → U41(active(X1), X2)
active(U42(X)) → U42(active(X))
active(U51(X1, X2)) → U51(active(X1), X2)
active(U52(X)) → U52(active(X))
active(U61(X1, X2, X3)) → U61(active(X1), X2, X3)
active(U62(X1, X2)) → U62(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
proper(U11(X)) → U11(proper(X))
proper(U21(X)) → U21(proper(X))
proper(U31(X)) → U31(proper(X))
proper(U41(X1, X2)) → U41(proper(X1), proper(X2))
proper(U42(X)) → U42(proper(X))
proper(isNatIList(X)) → isNatIList(proper(X))
proper(U51(X1, X2)) → U51(proper(X1), proper(X2))
proper(U52(X)) → U52(proper(X))
proper(isNatList(X)) → isNatList(proper(X))
proper(U61(X1, X2, X3)) → U61(proper(X1), proper(X2), proper(X3))
proper(U62(X1, X2)) → U62(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
(2) Obligation:
The Runtime Complexity (innermost) of the given
CpxTRS could be proven to be
BOUNDS(1, n^1).
The TRS R consists of the following rules:
U52(mark(X)) → mark(U52(X))
top(ok(X)) → top(active(X))
U51(mark(X1), X2) → mark(U51(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
isNat(ok(X)) → ok(isNat(X))
U51(ok(X1), ok(X2)) → ok(U51(X1, X2))
length(mark(X)) → mark(length(X))
isNatList(ok(X)) → ok(isNatList(X))
U41(mark(X1), X2) → mark(U41(X1, X2))
U42(ok(X)) → ok(U42(X))
length(ok(X)) → ok(length(X))
U42(mark(X)) → mark(U42(X))
U62(mark(X1), X2) → mark(U62(X1, X2))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
U21(mark(X)) → mark(U21(X))
U21(ok(X)) → ok(U21(X))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
U62(ok(X1), ok(X2)) → ok(U62(X1, X2))
U41(ok(X1), ok(X2)) → ok(U41(X1, X2))
active(zeros) → mark(cons(0, zeros))
U61(mark(X1), X2, X3) → mark(U61(X1, X2, X3))
U11(mark(X)) → mark(U11(X))
U11(ok(X)) → ok(U11(X))
U31(ok(X)) → ok(U31(X))
s(ok(X)) → ok(s(X))
U31(mark(X)) → mark(U31(X))
U61(ok(X1), ok(X2), ok(X3)) → ok(U61(X1, X2, X3))
s(mark(X)) → mark(s(X))
proper(0) → ok(0)
cons(mark(X1), X2) → mark(cons(X1, X2))
isNatIList(ok(X)) → ok(isNatIList(X))
top(mark(X)) → top(proper(X))
active(cons(X1, X2)) → cons(active(X1), X2)
U52(ok(X)) → ok(U52(X))
Rewrite Strategy: INNERMOST
(3) CpxTrsMatchBoundsTAProof (EQUIVALENT transformation)
A linear upper bound on the runtime complexity of the TRS R could be shown with a Match-Bound[TAB_LEFTLINEAR,TAB_NONLEFTLINEAR] (for contructor-based start-terms) of 5.
The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by:
final states : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
transitions:
mark0(0) → 0
ok0(0) → 0
tt0() → 0
nil0() → 0
zeros0() → 0
00() → 0
U520(0) → 1
top0(0) → 2
U510(0, 0) → 3
cons0(0, 0) → 4
isNat0(0) → 5
length0(0) → 6
isNatList0(0) → 7
U410(0, 0) → 8
U420(0) → 9
U620(0, 0) → 10
proper0(0) → 11
U210(0) → 12
active0(0) → 13
U610(0, 0, 0) → 14
U110(0) → 15
U310(0) → 16
s0(0) → 17
isNatIList0(0) → 18
U521(0) → 19
mark1(19) → 1
active1(0) → 20
top1(20) → 2
U511(0, 0) → 21
mark1(21) → 3
cons1(0, 0) → 22
ok1(22) → 4
isNat1(0) → 23
ok1(23) → 5
U511(0, 0) → 24
ok1(24) → 3
length1(0) → 25
mark1(25) → 6
isNatList1(0) → 26
ok1(26) → 7
U411(0, 0) → 27
mark1(27) → 8
U421(0) → 28
ok1(28) → 9
length1(0) → 29
ok1(29) → 6
U421(0) → 30
mark1(30) → 9
U621(0, 0) → 31
mark1(31) → 10
U211(0) → 32
mark1(32) → 12
U211(0) → 33
ok1(33) → 12
tt1() → 34
ok1(34) → 11
nil1() → 35
ok1(35) → 11
zeros1() → 36
ok1(36) → 11
U621(0, 0) → 37
ok1(37) → 10
U411(0, 0) → 38
ok1(38) → 8
01() → 40
zeros1() → 41
cons1(40, 41) → 39
mark1(39) → 13
U611(0, 0, 0) → 42
mark1(42) → 14
U111(0) → 43
mark1(43) → 15
U111(0) → 44
ok1(44) → 15
U311(0) → 45
ok1(45) → 16
s1(0) → 46
ok1(46) → 17
U311(0) → 47
mark1(47) → 16
U611(0, 0, 0) → 48
ok1(48) → 14
s1(0) → 49
mark1(49) → 17
01() → 50
ok1(50) → 11
cons1(0, 0) → 51
mark1(51) → 4
isNatIList1(0) → 52
ok1(52) → 18
proper1(0) → 53
top1(53) → 2
U521(0) → 54
ok1(54) → 1
mark1(19) → 19
mark1(19) → 54
mark1(21) → 21
mark1(21) → 24
ok1(22) → 22
ok1(22) → 51
ok1(23) → 23
ok1(24) → 21
ok1(24) → 24
mark1(25) → 25
mark1(25) → 29
ok1(26) → 26
mark1(27) → 27
mark1(27) → 38
ok1(28) → 28
ok1(28) → 30
ok1(29) → 25
ok1(29) → 29
mark1(30) → 28
mark1(30) → 30
mark1(31) → 31
mark1(31) → 37
mark1(32) → 32
mark1(32) → 33
ok1(33) → 32
ok1(33) → 33
ok1(34) → 53
ok1(35) → 53
ok1(36) → 53
ok1(37) → 31
ok1(37) → 37
ok1(38) → 27
ok1(38) → 38
mark1(39) → 20
mark1(42) → 42
mark1(42) → 48
mark1(43) → 43
mark1(43) → 44
ok1(44) → 43
ok1(44) → 44
ok1(45) → 45
ok1(45) → 47
ok1(46) → 46
ok1(46) → 49
mark1(47) → 45
mark1(47) → 47
ok1(48) → 42
ok1(48) → 48
mark1(49) → 46
mark1(49) → 49
ok1(50) → 53
mark1(51) → 22
mark1(51) → 51
ok1(52) → 52
ok1(54) → 19
ok1(54) → 54
active2(34) → 55
top2(55) → 2
active2(35) → 55
active2(36) → 55
active2(50) → 55
proper2(39) → 56
top2(56) → 2
proper2(40) → 57
proper2(41) → 58
cons2(57, 58) → 56
02() → 60
zeros2() → 61
cons2(60, 61) → 59
mark2(59) → 55
zeros2() → 62
ok2(62) → 58
02() → 63
ok2(63) → 57
proper3(59) → 64
top3(64) → 2
cons3(63, 62) → 65
ok3(65) → 56
proper3(60) → 66
proper3(61) → 67
cons3(66, 67) → 64
zeros3() → 68
ok3(68) → 67
03() → 69
ok3(69) → 66
active3(65) → 70
top3(70) → 2
cons4(69, 68) → 71
ok4(71) → 64
active4(63) → 72
cons4(72, 62) → 70
active4(71) → 73
top4(73) → 2
active5(69) → 74
cons5(74, 68) → 73
(4) BOUNDS(1, n^1)
(5) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)
Converted Cpx (relative) TRS to CDT
(6) Obligation:
Complexity Dependency Tuples Problem
Rules:
U52(mark(z0)) → mark(U52(z0))
U52(ok(z0)) → ok(U52(z0))
top(ok(z0)) → top(active(z0))
top(mark(z0)) → top(proper(z0))
U51(mark(z0), z1) → mark(U51(z0, z1))
U51(ok(z0), ok(z1)) → ok(U51(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
isNat(ok(z0)) → ok(isNat(z0))
length(mark(z0)) → mark(length(z0))
length(ok(z0)) → ok(length(z0))
isNatList(ok(z0)) → ok(isNatList(z0))
U41(mark(z0), z1) → mark(U41(z0, z1))
U41(ok(z0), ok(z1)) → ok(U41(z0, z1))
U42(ok(z0)) → ok(U42(z0))
U42(mark(z0)) → mark(U42(z0))
U62(mark(z0), z1) → mark(U62(z0, z1))
U62(ok(z0), ok(z1)) → ok(U62(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
U21(mark(z0)) → mark(U21(z0))
U21(ok(z0)) → ok(U21(z0))
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
U61(mark(z0), z1, z2) → mark(U61(z0, z1, z2))
U61(ok(z0), ok(z1), ok(z2)) → ok(U61(z0, z1, z2))
U11(mark(z0)) → mark(U11(z0))
U11(ok(z0)) → ok(U11(z0))
U31(ok(z0)) → ok(U31(z0))
U31(mark(z0)) → mark(U31(z0))
s(ok(z0)) → ok(s(z0))
s(mark(z0)) → mark(s(z0))
isNatIList(ok(z0)) → ok(isNatIList(z0))
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tt) → c19
PROPER(nil) → c20
PROPER(zeros) → c21
PROPER(0) → c22
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(zeros) → c25(CONS(0, zeros))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tt) → c19
PROPER(nil) → c20
PROPER(zeros) → c21
PROPER(0) → c22
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(zeros) → c25(CONS(0, zeros))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
K tuples:none
Defined Rule Symbols:
U52, top, U51, cons, isNat, length, isNatList, U41, U42, U62, proper, U21, active, U61, U11, U31, s, isNatIList
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(7) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)
Removed 5 trailing nodes:
PROPER(zeros) → c21
PROPER(0) → c22
ACTIVE(zeros) → c25(CONS(0, zeros))
PROPER(nil) → c20
PROPER(tt) → c19
(8) Obligation:
Complexity Dependency Tuples Problem
Rules:
U52(mark(z0)) → mark(U52(z0))
U52(ok(z0)) → ok(U52(z0))
top(ok(z0)) → top(active(z0))
top(mark(z0)) → top(proper(z0))
U51(mark(z0), z1) → mark(U51(z0, z1))
U51(ok(z0), ok(z1)) → ok(U51(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
isNat(ok(z0)) → ok(isNat(z0))
length(mark(z0)) → mark(length(z0))
length(ok(z0)) → ok(length(z0))
isNatList(ok(z0)) → ok(isNatList(z0))
U41(mark(z0), z1) → mark(U41(z0, z1))
U41(ok(z0), ok(z1)) → ok(U41(z0, z1))
U42(ok(z0)) → ok(U42(z0))
U42(mark(z0)) → mark(U42(z0))
U62(mark(z0), z1) → mark(U62(z0, z1))
U62(ok(z0), ok(z1)) → ok(U62(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
U21(mark(z0)) → mark(U21(z0))
U21(ok(z0)) → ok(U21(z0))
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
U61(mark(z0), z1, z2) → mark(U61(z0, z1, z2))
U61(ok(z0), ok(z1), ok(z2)) → ok(U61(z0, z1, z2))
U11(mark(z0)) → mark(U11(z0))
U11(ok(z0)) → ok(U11(z0))
U31(ok(z0)) → ok(U31(z0))
U31(mark(z0)) → mark(U31(z0))
s(ok(z0)) → ok(s(z0))
s(mark(z0)) → mark(s(z0))
isNatIList(ok(z0)) → ok(isNatIList(z0))
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
K tuples:none
Defined Rule Symbols:
U52, top, U51, cons, isNat, length, isNatList, U41, U42, U62, proper, U21, active, U61, U11, U31, s, isNatIList
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(9) CdtUsableRulesProof (EQUIVALENT transformation)
The following rules are not usable and were removed:
U52(mark(z0)) → mark(U52(z0))
U52(ok(z0)) → ok(U52(z0))
top(ok(z0)) → top(active(z0))
top(mark(z0)) → top(proper(z0))
U51(mark(z0), z1) → mark(U51(z0, z1))
U51(ok(z0), ok(z1)) → ok(U51(z0, z1))
isNat(ok(z0)) → ok(isNat(z0))
length(mark(z0)) → mark(length(z0))
length(ok(z0)) → ok(length(z0))
isNatList(ok(z0)) → ok(isNatList(z0))
U41(mark(z0), z1) → mark(U41(z0, z1))
U41(ok(z0), ok(z1)) → ok(U41(z0, z1))
U42(ok(z0)) → ok(U42(z0))
U42(mark(z0)) → mark(U42(z0))
U62(mark(z0), z1) → mark(U62(z0, z1))
U62(ok(z0), ok(z1)) → ok(U62(z0, z1))
U21(mark(z0)) → mark(U21(z0))
U21(ok(z0)) → ok(U21(z0))
U61(mark(z0), z1, z2) → mark(U61(z0, z1, z2))
U61(ok(z0), ok(z1), ok(z2)) → ok(U61(z0, z1, z2))
U11(mark(z0)) → mark(U11(z0))
U11(ok(z0)) → ok(U11(z0))
U31(ok(z0)) → ok(U31(z0))
U31(mark(z0)) → mark(U31(z0))
s(ok(z0)) → ok(s(z0))
s(mark(z0)) → mark(s(z0))
isNatIList(ok(z0)) → ok(isNatIList(z0))
(10) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
K tuples:none
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(11) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = 0
POL(ISNATILIST(x1)) = 0
POL(ISNATLIST(x1)) = 0
POL(LENGTH(x1)) = 0
POL(PROPER(x1)) = 0
POL(S(x1)) = 0
POL(TOP(x1)) = 0
POL(U11'(x1)) = 0
POL(U21'(x1)) = 0
POL(U31'(x1)) = 0
POL(U41'(x1, x2)) = x2
POL(U42'(x1)) = 0
POL(U51'(x1, x2)) = 0
POL(U52'(x1)) = 0
POL(U61'(x1, x2, x3)) = 0
POL(U62'(x1, x2)) = 0
POL(active(x1)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = 0
POL(mark(x1)) = 0
POL(nil) = 0
POL(ok(x1)) = [1] + x1
POL(proper(x1)) = 0
POL(tt) = 0
POL(zeros) = 0
(12) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(13) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
We considered the (Usable) Rules:none
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = 0
POL(ISNATILIST(x1)) = x1
POL(ISNATLIST(x1)) = x1
POL(LENGTH(x1)) = x1
POL(PROPER(x1)) = 0
POL(S(x1)) = 0
POL(TOP(x1)) = 0
POL(U11'(x1)) = x1
POL(U21'(x1)) = 0
POL(U31'(x1)) = 0
POL(U41'(x1, x2)) = 0
POL(U42'(x1)) = 0
POL(U51'(x1, x2)) = 0
POL(U52'(x1)) = 0
POL(U61'(x1, x2, x3)) = 0
POL(U62'(x1, x2)) = x2
POL(active(x1)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = 0
POL(mark(x1)) = [1] + x1
POL(nil) = 0
POL(ok(x1)) = [1] + x1
POL(proper(x1)) = 0
POL(tt) = 0
POL(zeros) = 0
(14) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(15) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
We considered the (Usable) Rules:none
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = 0
POL(ISNATILIST(x1)) = [2]x1
POL(ISNATLIST(x1)) = 0
POL(LENGTH(x1)) = 0
POL(PROPER(x1)) = 0
POL(S(x1)) = 0
POL(TOP(x1)) = 0
POL(U11'(x1)) = 0
POL(U21'(x1)) = 0
POL(U31'(x1)) = 0
POL(U41'(x1, x2)) = x2
POL(U42'(x1)) = 0
POL(U51'(x1, x2)) = x2
POL(U52'(x1)) = 0
POL(U61'(x1, x2, x3)) = x2
POL(U62'(x1, x2)) = x2
POL(active(x1)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = 0
POL(mark(x1)) = 0
POL(nil) = 0
POL(ok(x1)) = [2] + x1
POL(proper(x1)) = 0
POL(tt) = 0
POL(zeros) = 0
(16) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(17) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
ISNAT(ok(z0)) → c8(ISNAT(z0))
We considered the (Usable) Rules:none
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = x1
POL(ISNATILIST(x1)) = 0
POL(ISNATLIST(x1)) = 0
POL(LENGTH(x1)) = 0
POL(PROPER(x1)) = 0
POL(S(x1)) = 0
POL(TOP(x1)) = 0
POL(U11'(x1)) = 0
POL(U21'(x1)) = 0
POL(U31'(x1)) = 0
POL(U41'(x1, x2)) = 0
POL(U42'(x1)) = 0
POL(U51'(x1, x2)) = x2
POL(U52'(x1)) = 0
POL(U61'(x1, x2, x3)) = x1
POL(U62'(x1, x2)) = 0
POL(active(x1)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = 0
POL(mark(x1)) = x1
POL(nil) = 0
POL(ok(x1)) = [1] + x1
POL(proper(x1)) = 0
POL(tt) = 0
POL(zeros) = 0
(18) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(19) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
We considered the (Usable) Rules:none
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = 0
POL(ISNATILIST(x1)) = 0
POL(ISNATLIST(x1)) = 0
POL(LENGTH(x1)) = 0
POL(PROPER(x1)) = 0
POL(S(x1)) = x1
POL(TOP(x1)) = 0
POL(U11'(x1)) = x1
POL(U21'(x1)) = 0
POL(U31'(x1)) = 0
POL(U41'(x1, x2)) = x1
POL(U42'(x1)) = 0
POL(U51'(x1, x2)) = x1
POL(U52'(x1)) = x1
POL(U61'(x1, x2, x3)) = x3
POL(U62'(x1, x2)) = 0
POL(active(x1)) = [1]
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = 0
POL(mark(x1)) = [1] + x1
POL(nil) = 0
POL(ok(x1)) = x1
POL(proper(x1)) = 0
POL(tt) = 0
POL(zeros) = 0
(20) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(21) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
We considered the (Usable) Rules:none
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = 0
POL(ISNATILIST(x1)) = 0
POL(ISNATLIST(x1)) = 0
POL(LENGTH(x1)) = 0
POL(PROPER(x1)) = 0
POL(S(x1)) = x1
POL(TOP(x1)) = 0
POL(U11'(x1)) = 0
POL(U21'(x1)) = x1
POL(U31'(x1)) = 0
POL(U41'(x1, x2)) = 0
POL(U42'(x1)) = x1
POL(U51'(x1, x2)) = 0
POL(U52'(x1)) = 0
POL(U61'(x1, x2, x3)) = 0
POL(U62'(x1, x2)) = 0
POL(active(x1)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = 0
POL(mark(x1)) = x1
POL(nil) = 0
POL(ok(x1)) = [1] + x1
POL(proper(x1)) = 0
POL(tt) = 0
POL(zeros) = 0
(22) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(23) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
We considered the (Usable) Rules:none
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = 0
POL(ISNATILIST(x1)) = 0
POL(ISNATLIST(x1)) = 0
POL(LENGTH(x1)) = 0
POL(PROPER(x1)) = 0
POL(S(x1)) = 0
POL(TOP(x1)) = 0
POL(U11'(x1)) = 0
POL(U21'(x1)) = 0
POL(U31'(x1)) = 0
POL(U41'(x1, x2)) = x2
POL(U42'(x1)) = x1
POL(U51'(x1, x2)) = 0
POL(U52'(x1)) = x1
POL(U61'(x1, x2, x3)) = x2
POL(U62'(x1, x2)) = 0
POL(active(x1)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = 0
POL(mark(x1)) = [1] + x1
POL(nil) = 0
POL(ok(x1)) = [1] + x1
POL(proper(x1)) = 0
POL(tt) = 0
POL(zeros) = 0
(24) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(25) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
We considered the (Usable) Rules:none
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = 0
POL(ISNATILIST(x1)) = 0
POL(ISNATLIST(x1)) = x1
POL(LENGTH(x1)) = x1
POL(PROPER(x1)) = 0
POL(S(x1)) = 0
POL(TOP(x1)) = 0
POL(U11'(x1)) = 0
POL(U21'(x1)) = x1
POL(U31'(x1)) = 0
POL(U41'(x1, x2)) = 0
POL(U42'(x1)) = 0
POL(U51'(x1, x2)) = x1 + x2
POL(U52'(x1)) = 0
POL(U61'(x1, x2, x3)) = x1 + x2 + x3
POL(U62'(x1, x2)) = 0
POL(active(x1)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = 0
POL(mark(x1)) = [1] + x1
POL(nil) = 0
POL(ok(x1)) = x1
POL(proper(x1)) = 0
POL(tt) = 0
POL(zeros) = 0
(26) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(27) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
U31'(ok(z0)) → c31(U31'(z0))
We considered the (Usable) Rules:none
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = 0
POL(ISNATILIST(x1)) = 0
POL(ISNATLIST(x1)) = 0
POL(LENGTH(x1)) = 0
POL(PROPER(x1)) = 0
POL(S(x1)) = 0
POL(TOP(x1)) = 0
POL(U11'(x1)) = 0
POL(U21'(x1)) = 0
POL(U31'(x1)) = x1
POL(U41'(x1, x2)) = 0
POL(U42'(x1)) = 0
POL(U51'(x1, x2)) = 0
POL(U52'(x1)) = 0
POL(U61'(x1, x2, x3)) = 0
POL(U62'(x1, x2)) = 0
POL(active(x1)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = 0
POL(mark(x1)) = x1
POL(nil) = 0
POL(ok(x1)) = [1] + x1
POL(proper(x1)) = 0
POL(tt) = 0
POL(zeros) = 0
(28) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U31'(mark(z0)) → c32(U31'(z0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(29) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
U31'(mark(z0)) → c32(U31'(z0))
We considered the (Usable) Rules:none
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = x1
POL(ISNATILIST(x1)) = 0
POL(ISNATLIST(x1)) = x1
POL(LENGTH(x1)) = 0
POL(PROPER(x1)) = 0
POL(S(x1)) = 0
POL(TOP(x1)) = 0
POL(U11'(x1)) = 0
POL(U21'(x1)) = 0
POL(U31'(x1)) = x1
POL(U41'(x1, x2)) = 0
POL(U42'(x1)) = 0
POL(U51'(x1, x2)) = x2
POL(U52'(x1)) = x1
POL(U61'(x1, x2, x3)) = 0
POL(U62'(x1, x2)) = 0
POL(active(x1)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = 0
POL(mark(x1)) = [1] + x1
POL(nil) = 0
POL(ok(x1)) = x1
POL(proper(x1)) = 0
POL(tt) = 0
POL(zeros) = 0
(30) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(31) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
U62'(mark(z0), z1) → c16(U62'(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = 0
POL(ISNATILIST(x1)) = 0
POL(ISNATLIST(x1)) = 0
POL(LENGTH(x1)) = 0
POL(PROPER(x1)) = 0
POL(S(x1)) = 0
POL(TOP(x1)) = 0
POL(U11'(x1)) = 0
POL(U21'(x1)) = 0
POL(U31'(x1)) = 0
POL(U41'(x1, x2)) = 0
POL(U42'(x1)) = 0
POL(U51'(x1, x2)) = 0
POL(U52'(x1)) = 0
POL(U61'(x1, x2, x3)) = 0
POL(U62'(x1, x2)) = x1
POL(active(x1)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = 0
POL(mark(x1)) = [1] + x1
POL(nil) = 0
POL(ok(x1)) = x1
POL(proper(x1)) = 0
POL(tt) = 0
POL(zeros) = 0
(32) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(33) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
We considered the (Usable) Rules:
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
proper(0) → ok(0)
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = 0
POL(ISNATILIST(x1)) = 0
POL(ISNATLIST(x1)) = 0
POL(LENGTH(x1)) = 0
POL(PROPER(x1)) = 0
POL(S(x1)) = 0
POL(TOP(x1)) = x1
POL(U11'(x1)) = 0
POL(U21'(x1)) = 0
POL(U31'(x1)) = 0
POL(U41'(x1, x2)) = 0
POL(U42'(x1)) = 0
POL(U51'(x1, x2)) = 0
POL(U52'(x1)) = 0
POL(U61'(x1, x2, x3)) = x3
POL(U62'(x1, x2)) = x2
POL(active(x1)) = x1
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = x1
POL(mark(x1)) = [1] + x1
POL(nil) = 0
POL(ok(x1)) = x1
POL(proper(x1)) = x1
POL(tt) = 0
POL(zeros) = [1]
(34) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(35) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
We considered the (Usable) Rules:
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
proper(0) → ok(0)
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = 0
POL(ISNATILIST(x1)) = 0
POL(ISNATLIST(x1)) = 0
POL(LENGTH(x1)) = 0
POL(PROPER(x1)) = 0
POL(S(x1)) = 0
POL(TOP(x1)) = x1
POL(U11'(x1)) = 0
POL(U21'(x1)) = 0
POL(U31'(x1)) = 0
POL(U41'(x1, x2)) = 0
POL(U42'(x1)) = 0
POL(U51'(x1, x2)) = 0
POL(U52'(x1)) = 0
POL(U61'(x1, x2, x3)) = x1
POL(U62'(x1, x2)) = 0
POL(active(x1)) = x1
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = x1
POL(mark(x1)) = [1] + x1
POL(nil) = 0
POL(ok(x1)) = [1] + x1
POL(proper(x1)) = [1] + x1
POL(tt) = 0
POL(zeros) = [1]
(36) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(37) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
We considered the (Usable) Rules:
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
proper(0) → ok(0)
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
And the Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ACTIVE(x1)) = [2] + x1
POL(CONS(x1, x2)) = 0
POL(ISNAT(x1)) = [2]x1 + x12
POL(ISNATILIST(x1)) = 0
POL(ISNATLIST(x1)) = [2]x1
POL(LENGTH(x1)) = 0
POL(PROPER(x1)) = 0
POL(S(x1)) = [2]x1 + x12
POL(TOP(x1)) = [2]x12
POL(U11'(x1)) = [2]x1 + x12
POL(U21'(x1)) = [2]x12
POL(U31'(x1)) = [2]x1 + x12
POL(U41'(x1, x2)) = x22 + x1·x2
POL(U42'(x1)) = x12
POL(U51'(x1, x2)) = [2]x1 + x22 + x1·x2 + [2]x12
POL(U52'(x1)) = 0
POL(U61'(x1, x2, x3)) = [2]x1 + [2]x2 + x32 + [2]x1·x3 + x22
POL(U62'(x1, x2)) = x1
POL(active(x1)) = x1
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c10(x1)) = x1
POL(c11(x1)) = x1
POL(c12(x1)) = x1
POL(c13(x1)) = x1
POL(c14(x1)) = x1
POL(c15(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c18(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2)) = x1 + x2
POL(c23(x1)) = x1
POL(c24(x1)) = x1
POL(c26(x1, x2)) = x1 + x2
POL(c27(x1)) = x1
POL(c28(x1)) = x1
POL(c29(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(c30(x1)) = x1
POL(c31(x1)) = x1
POL(c32(x1)) = x1
POL(c33(x1)) = x1
POL(c34(x1)) = x1
POL(c35(x1)) = x1
POL(c4(x1)) = x1
POL(c5(x1)) = x1
POL(c6(x1)) = x1
POL(c7(x1)) = x1
POL(c8(x1)) = x1
POL(c9(x1)) = x1
POL(cons(x1, x2)) = [1] + x1
POL(mark(x1)) = [1] + x1
POL(nil) = 0
POL(ok(x1)) = [1] + x1
POL(proper(x1)) = [1] + x1
POL(tt) = 0
POL(zeros) = [2]
(38) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35
(39) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
TOP(
ok(
z0)) →
c2(
TOP(
active(
z0)),
ACTIVE(
z0)) by
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
(40) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2
(41) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing tuple parts
(42) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST
Compound Symbols:
c, c1, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2
(43) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
TOP(
mark(
z0)) →
c3(
TOP(
proper(
z0)),
PROPER(
z0)) by
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(tt)) → c3(TOP(ok(tt)), PROPER(tt))
TOP(mark(nil)) → c3(TOP(ok(nil)), PROPER(nil))
TOP(mark(zeros)) → c3(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(0)) → c3(TOP(ok(0)), PROPER(0))
(44) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(tt)) → c3(TOP(ok(tt)), PROPER(tt))
TOP(mark(nil)) → c3(TOP(ok(nil)), PROPER(nil))
TOP(mark(zeros)) → c3(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(0)) → c3(TOP(ok(0)), PROPER(0))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST, TOP
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3
(45) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)
Removed 3 trailing nodes:
TOP(mark(tt)) → c3(TOP(ok(tt)), PROPER(tt))
TOP(mark(nil)) → c3(TOP(ok(nil)), PROPER(nil))
TOP(mark(0)) → c3(TOP(ok(0)), PROPER(0))
(46) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)), PROPER(zeros))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST, TOP
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3
(47) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing tuple parts
(48) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST, TOP
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3, c3
(49) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PROPER(
cons(
z0,
z1)) →
c18(
CONS(
proper(
z0),
proper(
z1)),
PROPER(
z0),
PROPER(
z1)) by
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0), PROPER(tt))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(tt), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
(50) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0), PROPER(tt))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(tt), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0), PROPER(tt))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(tt), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', ACTIVE, U61', U11', U31', S, ISNATILIST, TOP, PROPER
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3, c3, c18
(51) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 8 trailing tuple parts
(52) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', ACTIVE, U61', U11', U31', S, ISNATILIST, TOP, PROPER
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3, c3, c18, c18
(53) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
ACTIVE(
cons(
z0,
z1)) →
c26(
CONS(
active(
z0),
z1),
ACTIVE(
z0)) by
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
(54) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3, c3, c18, c18, c26
(55) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing tuple parts
(56) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3, c3, c18, c18, c26, c26
(57) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
TOP(
ok(
cons(
z0,
z1))) →
c2(
TOP(
cons(
active(
z0),
z1)),
ACTIVE(
cons(
z0,
z1))) by
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
(58) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c3, c18, c18, c26, c26, c2
(59) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
TOP(
mark(
cons(
z0,
z1))) →
c3(
TOP(
cons(
proper(
z0),
proper(
z1))),
PROPER(
cons(
z0,
z1))) by
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
(60) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c18, c26, c26, c2, c3
(61) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PROPER(
cons(
x0,
cons(
z0,
z1))) →
c18(
CONS(
proper(
x0),
cons(
proper(
z0),
proper(
z1))),
PROPER(
x0),
PROPER(
cons(
z0,
z1))) by
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(tt), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(nil), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(zeros), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(0), PROPER(cons(x1, x2)))
(62) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(tt), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(nil), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(zeros), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(0), PROPER(cons(x1, x2)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(tt), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(nil), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(zeros), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(0), PROPER(cons(x1, x2)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c18, c26, c26, c2, c3
(63) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 4 trailing tuple parts
(64) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c18, c26, c26, c2, c3
(65) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PROPER(
cons(
cons(
z0,
z1),
x1)) →
c18(
CONS(
cons(
proper(
z0),
proper(
z1)),
proper(
x1)),
PROPER(
cons(
z0,
z1)),
PROPER(
x1)) by
PROPER(cons(cons(x0, x1), cons(z0, z1))) → c18(CONS(cons(proper(x0), proper(x1)), cons(proper(z0), proper(z1))), PROPER(cons(x0, x1)), PROPER(cons(z0, z1)))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)), PROPER(tt))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)), PROPER(nil))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)), PROPER(zeros))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)), PROPER(0))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
(66) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)), PROPER(tt))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)), PROPER(nil))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)), PROPER(zeros))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)), PROPER(0))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)), PROPER(tt))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)), PROPER(nil))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)), PROPER(zeros))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)), PROPER(0))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18
(67) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 4 trailing tuple parts
(68) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18
(69) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PROPER(
cons(
x0,
tt)) →
c18(
CONS(
proper(
x0),
ok(
tt)),
PROPER(
x0)) by
PROPER(cons(cons(z0, z1), tt)) → c18(CONS(cons(proper(z0), proper(z1)), ok(tt)), PROPER(cons(z0, z1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)), PROPER(tt))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)), PROPER(nil))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)), PROPER(zeros))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)), PROPER(0))
(70) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)), PROPER(tt))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)), PROPER(nil))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)), PROPER(zeros))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)), PROPER(0))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)), PROPER(tt))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)), PROPER(nil))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)), PROPER(zeros))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)), PROPER(0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18
(71) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 4 trailing tuple parts
(72) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18
(73) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PROPER(
cons(
x0,
nil)) →
c18(
CONS(
proper(
x0),
ok(
nil)),
PROPER(
x0)) by
PROPER(cons(cons(z0, z1), nil)) → c18(CONS(cons(proper(z0), proper(z1)), ok(nil)), PROPER(cons(z0, z1)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)), PROPER(tt))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)), PROPER(nil))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)), PROPER(zeros))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)), PROPER(0))
(74) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)), PROPER(tt))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)), PROPER(nil))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)), PROPER(zeros))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)), PROPER(0))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)), PROPER(tt))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)), PROPER(nil))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)), PROPER(zeros))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)), PROPER(0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18
(75) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 4 trailing tuple parts
(76) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18
(77) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PROPER(
cons(
x0,
zeros)) →
c18(
CONS(
proper(
x0),
ok(
zeros)),
PROPER(
x0)) by
PROPER(cons(cons(z0, z1), zeros)) → c18(CONS(cons(proper(z0), proper(z1)), ok(zeros)), PROPER(cons(z0, z1)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)), PROPER(tt))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)), PROPER(nil))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)), PROPER(zeros))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)), PROPER(0))
(78) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)), PROPER(tt))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)), PROPER(nil))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)), PROPER(zeros))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)), PROPER(0))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)), PROPER(tt))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)), PROPER(nil))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)), PROPER(zeros))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)), PROPER(0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18
(79) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 4 trailing tuple parts
(80) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18
(81) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PROPER(
cons(
x0,
0)) →
c18(
CONS(
proper(
x0),
ok(
0)),
PROPER(
x0)) by
PROPER(cons(cons(z0, z1), 0)) → c18(CONS(cons(proper(z0), proper(z1)), ok(0)), PROPER(cons(z0, z1)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)), PROPER(tt))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)), PROPER(nil))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)), PROPER(zeros))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)), PROPER(0))
(82) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)), PROPER(tt))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)), PROPER(nil))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)), PROPER(zeros))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)), PROPER(0))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)), PROPER(tt))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)), PROPER(nil))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)), PROPER(zeros))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)), PROPER(0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18
(83) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 4 trailing tuple parts
(84) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18
(85) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PROPER(
cons(
tt,
x1)) →
c18(
CONS(
ok(
tt),
proper(
x1)),
PROPER(
x1)) by
PROPER(cons(tt, cons(z0, z1))) → c18(CONS(ok(tt), cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)), PROPER(tt))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)), PROPER(nil))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)), PROPER(zeros))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)), PROPER(0))
(86) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)), PROPER(tt))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)), PROPER(nil))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)), PROPER(zeros))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)), PROPER(0))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)), PROPER(tt))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)), PROPER(nil))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)), PROPER(zeros))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)), PROPER(0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18
(87) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 4 trailing tuple parts
(88) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18
(89) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PROPER(
cons(
nil,
x1)) →
c18(
CONS(
ok(
nil),
proper(
x1)),
PROPER(
x1)) by
PROPER(cons(nil, cons(z0, z1))) → c18(CONS(ok(nil), cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)), PROPER(tt))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)), PROPER(nil))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)), PROPER(zeros))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)), PROPER(0))
(90) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)), PROPER(tt))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)), PROPER(nil))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)), PROPER(zeros))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)), PROPER(0))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)), PROPER(tt))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)), PROPER(nil))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)), PROPER(zeros))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)), PROPER(0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18
(91) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 4 trailing tuple parts
(92) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18
(93) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PROPER(
cons(
zeros,
x1)) →
c18(
CONS(
ok(
zeros),
proper(
x1)),
PROPER(
x1)) by
PROPER(cons(zeros, cons(z0, z1))) → c18(CONS(ok(zeros), cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)), PROPER(tt))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)), PROPER(nil))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)), PROPER(zeros))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)), PROPER(0))
(94) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)), PROPER(tt))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)), PROPER(nil))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)), PROPER(zeros))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)), PROPER(0))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)), PROPER(tt))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)), PROPER(nil))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)), PROPER(zeros))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)), PROPER(0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18
(95) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 4 trailing tuple parts
(96) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18
(97) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
PROPER(
cons(
0,
x1)) →
c18(
CONS(
ok(
0),
proper(
x1)),
PROPER(
x1)) by
PROPER(cons(0, cons(z0, z1))) → c18(CONS(ok(0), cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)), PROPER(tt))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)), PROPER(nil))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)), PROPER(zeros))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)), PROPER(0))
(98) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)), PROPER(tt))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)), PROPER(nil))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)), PROPER(zeros))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)), PROPER(0))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)), PROPER(tt))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)), PROPER(nil))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)), PROPER(zeros))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)), PROPER(0))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c26, c2, c3, c18, c18, c18
(99) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 4 trailing tuple parts
(100) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c26, c2, c3, c18, c18, c18
(101) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
ACTIVE(
cons(
cons(
z0,
z1),
x1)) →
c26(
CONS(
cons(
active(
z0),
z1),
x1),
ACTIVE(
cons(
z0,
z1))) by
ACTIVE(cons(cons(zeros, x1), x2)) → c26(CONS(cons(mark(cons(0, zeros)), x1), x2), ACTIVE(cons(zeros, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
(102) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(zeros, x1), x2)) → c26(CONS(cons(mark(cons(0, zeros)), x1), x2), ACTIVE(cons(zeros, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26
(103) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)
Split RHS of tuples not part of any SCC
(104) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER
Compound Symbols:
c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19
(105) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U52'(
mark(
z0)) →
c(
U52'(
z0)) by
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
(106) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER
Compound Symbols:
c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19, c
(107) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)
Used rewriting to replace TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1))) by TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
(108) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER
Compound Symbols:
c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19, c
(109) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U52'(
ok(
z0)) →
c1(
U52'(
z0)) by
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
(110) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER, U52'
Compound Symbols:
c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19, c, c1
(111) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U51'(
mark(
z0),
z1) →
c4(
U51'(
z0,
z1)) by
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
(112) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER, U52'
Compound Symbols:
c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19, c, c1, c4
(113) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U51'(
ok(
z0),
ok(
z1)) →
c5(
U51'(
z0,
z1)) by
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
(114) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
S tuples:
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER, U52', U51'
Compound Symbols:
c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19, c, c1, c4, c5
(115) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
CONS(
ok(
z0),
ok(
z1)) →
c6(
CONS(
z0,
z1)) by
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
(116) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
S tuples:
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER, U52', U51'
Compound Symbols:
c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19, c, c1, c4, c5, c6
(117) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 40 trailing tuple parts
(118) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
S tuples:
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER, U52', U51'
Compound Symbols:
c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18
(119) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
CONS(
mark(
z0),
z1) →
c7(
CONS(
z0,
z1)) by
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
(120) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER, U52', U51', CONS
Compound Symbols:
c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7
(121) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)
Removed 2 trailing nodes:
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
(122) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS
Compound Symbols:
c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7
(123) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing tuple parts
(124) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS
Compound Symbols:
c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7
(125) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
ISNAT(
ok(
z0)) →
c8(
ISNAT(
z0)) by
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
(126) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT
Compound Symbols:
c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8
(127) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
LENGTH(
mark(
z0)) →
c9(
LENGTH(
z0)) by
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
(128) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT
Compound Symbols:
c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9
(129) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
LENGTH(
ok(
z0)) →
c10(
LENGTH(
z0)) by
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
(130) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH
Compound Symbols:
c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10
(131) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
ISNATLIST(
ok(
z0)) →
c11(
ISNATLIST(
z0)) by
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
(132) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST
Compound Symbols:
c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11
(133) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U41'(
mark(
z0),
z1) →
c12(
U41'(
z0,
z1)) by
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
(134) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST
Compound Symbols:
c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12
(135) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U41'(
ok(
z0),
ok(
z1)) →
c13(
U41'(
z0,
z1)) by
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
(136) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41'
Compound Symbols:
c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13
(137) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U42'(
ok(
z0)) →
c14(
U42'(
z0)) by
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
(138) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41'
Compound Symbols:
c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14
(139) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U42'(
mark(
z0)) →
c15(
U42'(
z0)) by
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
(140) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42'
Compound Symbols:
c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15
(141) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U62'(
mark(
z0),
z1) →
c16(
U62'(
z0,
z1)) by
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
(142) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42'
Compound Symbols:
c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16
(143) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U62'(
ok(
z0),
ok(
z1)) →
c17(
U62'(
z0,
z1)) by
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
(144) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62'
Compound Symbols:
c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17
(145) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U21'(
mark(
z0)) →
c23(
U21'(
z0)) by
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
(146) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62'
Compound Symbols:
c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23
(147) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U21'(
ok(
z0)) →
c24(
U21'(
z0)) by
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
(148) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
S(ok(z0)) → c33(S(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21'
Compound Symbols:
c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24
(149) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U61'(
mark(
z0),
z1,
z2) →
c27(
U61'(
z0,
z1,
z2)) by
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
(150) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
S(ok(z0)) → c33(S(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21'
Compound Symbols:
c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27
(151) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U61'(
ok(
z0),
ok(
z1),
ok(
z2)) →
c28(
U61'(
z0,
z1,
z2)) by
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
(152) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S(mark(z0)) → c34(S(z0))
S(ok(z0)) → c33(S(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61'
Compound Symbols:
c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28
(153) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U11'(
mark(
z0)) →
c29(
U11'(
z0)) by
U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))
(154) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S(mark(z0)) → c34(S(z0))
S(ok(z0)) → c33(S(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61'
Compound Symbols:
c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29
(155) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U11'(
ok(
z0)) →
c30(
U11'(
z0)) by
U11'(ok(ok(y0))) → c30(U11'(ok(y0)))
U11'(ok(mark(mark(y0)))) → c30(U11'(mark(mark(y0))))
U11'(ok(mark(ok(y0)))) → c30(U11'(mark(ok(y0))))
(156) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))
U11'(ok(ok(y0))) → c30(U11'(ok(y0)))
U11'(ok(mark(mark(y0)))) → c30(U11'(mark(mark(y0))))
U11'(ok(mark(ok(y0)))) → c30(U11'(mark(ok(y0))))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S(mark(z0)) → c34(S(z0))
S(ok(z0)) → c33(S(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))
U11'(ok(ok(y0))) → c30(U11'(ok(y0)))
U11'(ok(mark(mark(y0)))) → c30(U11'(mark(mark(y0))))
U11'(ok(mark(ok(y0)))) → c30(U11'(mark(ok(y0))))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11'
Compound Symbols:
c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30
(157) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
U31'(
ok(
z0)) →
c31(
U31'(
z0)) by
U31'(ok(ok(y0))) → c31(U31'(ok(y0)))
U31'(ok(mark(y0))) → c31(U31'(mark(y0)))
(158) Obligation:
Complexity Dependency Tuples Problem
Rules:
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))
U11'(ok(ok(y0))) → c30(U11'(ok(y0)))
U11'(ok(mark(mark(y0)))) → c30(U11'(mark(mark(y0))))
U11'(ok(mark(ok(y0)))) → c30(U11'(mark(ok(y0))))
U31'(ok(ok(y0))) → c31(U31'(ok(y0)))
U31'(ok(mark(y0))) → c31(U31'(mark(y0)))
S tuples:
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S(mark(z0)) → c34(S(z0))
S(ok(z0)) → c33(S(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))
U11'(ok(ok(y0))) → c30(U11'(ok(y0)))
U11'(ok(mark(mark(y0)))) → c30(U11'(mark(mark(y0))))
U11'(ok(mark(ok(y0)))) → c30(U11'(mark(ok(y0))))
U31'(ok(ok(y0))) → c31(U31'(ok(y0)))
U31'(ok(mark(y0))) → c31(U31'(mark(y0)))
Defined Rule Symbols:
active, cons, proper
Defined Pair Symbols:
U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11'
Compound Symbols:
c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31